"""
统一的系统提示词管理类
集中管理所有 actions 和 model 文件夹中的系统提示词
"""
from datetime import datetime
from typing import Dict, Any, List


class SystemPrompts:
    """系统提示词管理类"""

    # ==== 基础通用提示词 ====

    @staticmethod
    def base_assistant():
        """基础智能助手提示词 - 通用版本"""
        return "你是一个乐于助人的AI智能助手，具备分析问题和提供解决方案的能力。"

    @staticmethod
    def base_assistant_with_tools():
        """带工具能力的智能助手提示词"""
        return "你是一个智能AI助手，可以使用各种工具来帮助用户解决问题。"

    # ==== Agent智能提示词构建方法 ====
    @classmethod
    def build_system_prompt(cls, base_prompt: str, agent_context: Dict[str, Any]) -> str:
        """构建智能系统提示词"""

        # 构建智能提示词
        intelligent_prompt = f"""{base_prompt}
**时间设定**：当前时间是：{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
"""

        # 从Agent上下文获取MCP信息
        if agent_context.get('mcp_guidance'):
            mcp_guidance = agent_context['mcp_guidance']
            if mcp_guidance:
                mcp_info = f"{mcp_guidance}\n"
                intelligent_prompt += mcp_info
        return intelligent_prompt


    @classmethod
    def build_format_sys_prompt(cls):
        """构建导航系统提示词"""
        # 构建详细的结果展示
        navigation_sys_prompt = f"""
# 响应格式:
## 可选的行动：
tool、mcp、rag、answer
### "tool": 调用浏览器工具执行页面操作。选择调用工具需返回：
```json
{{
    "action": "tool",
    "tool_name": "具体工具名称",
    "tool_params": {{
        "参数名": "参数值（需符合工具接口规范）"
    }},
    "reasoning": "选择依据（需包含当前任务阶段分析、工具适配性说明）",
    "should_continue": "true/false（明确是否需要后续操作）"
}}
```

### "mcp": 调用MCP接口获取外部服务。选择调用MCP需返回：
```json
{{
    "action": "mcp",
    "server_name": "具体MCP服务名称", 
    "tool_name": "具体工具名称",
    "mcp_params": {{
        "参数名": "参数值"
    }},
    "reasoning": "选择依据（需包含当前任务阶段分析、工具适配性说明）",
    "should_continue": "true/false"
}}
```

### "rag": 查询导航数据库，寻找相关页面信息。选择rag检索返回格式：
```json
{{
    "action": "rag",
    "reasoning": "检索需求说明（需明确待检索信息及检索必要性）",
    "should_continue": "true/false"
}}
```

### "answer": 完成任务并生成最终回答。选择直接回答返回格式：
```json
{{
    "action": "direct_answer",
    "content": "结论性回答（需总结任务执行结果）",
    "reasoning": "直接回答依据（说明任务完成状态）",
    "should_continue": false
}}
```
"""
        return navigation_sys_prompt


# 为了向后兼容，创建一个实例
sys_prompts = SystemPrompts()
